iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0

Gem5

前面我們介紹過作為"功能模擬器"的Spike, 以及作為仿真機的QEMU,今天要講另一個有別於他們的時序模擬器"Gem5",Gem5與前述兩者不同,很大程度的模擬了硬體的實際架構,包含分支預測、記憶體架構、甚至處理器是有序還是無序都有模擬,且Gem5支援多個指令集架構。特別的架構與指令集是獨立的,也就是是說Gem5裡面的亂序處理器可以同時配合X86, 配合RISC-V等進行模擬,實在可說是功能強大。

Gem5本身是透過C++所撰寫,但整個框架是透過python去建立,因此在許多地方保留了python的方便性,例如要配置Cache大小、分支預測的種類等都是透過python的框架去設定。而與Spike和QEMU不同,Gem5本身保留了不透過OS,直接運行程式的能力,因此在使用上也更為方便,甚至還提供了SystemC的接口 (關於SystemC可以參考這系列文章,是在鐵人賽寫模擬器的前輩寫的)。

美中不足的地方是,由於Gem5模擬的精度較高,因此做為代價無可避免的就是他的速度較慢,而Gem5為此提供了幾種解套,首先Gem5的編譯有分為 fast, opt, debug等三種模式,其中fast最快,但不包含debug flags(可以理解為像Qemu那樣,倒出感興趣的flags的log系統)及debugger功能,而opt則是僅有debug flags,debug mode則是都有包含。

除此之外,gem5本身也提供不同程度的處理器架構供我們模擬,例如我們只在意指令的正確 (類似想要ISA simulator),我們可以將cpu設定為 nocaching-simple cpu,這樣cpu本身的流水線行為及對快取的讀寫會被抽象化,而如果我們想要精確地了解亂序處理器(Out of order cpu)的原理及流水線行為,則可以設定為O3CPU,此時會真實模擬亂序處理器中的各種行為。

Gem5安裝

Gem5的安裝相當簡單,可以參考官方網站的內容,具體的方式如下

安裝依賴的檔案

sudo apt install build-essential git m4 scons zlib1g zlib1g-dev \
    libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \
    python3-dev libboost-all-dev pkg-config

前面有提到,Gem5是透過python去包裝,其建立時的系統也不是常見的makefile而是scons這套基於python的建立系統,因此在安裝的時候可以特別注意一下版本,scons要3以上,而python則是要3.6以上才能順利安裝。

安裝完成後,我們將Gem5 clone下來,並建立執行檔

git clone https://github.com/gem5/gem5
cd gem5
scons build/{RISCV}/gem5.{fast}

建立時間稍長,完成後我們就可以執行先前建立好的helloWorld程式了

/build/RISCV/gem5.fast ./configs/example/se.py -c HelloWorld

就可以順利看到Gem5的歡迎畫面及HelloWorld了。

使用Gem5的小技巧

先前執行HelloWolrd時執行的se.py意思是System Emulation的意思,與之對應的是fs.py(Full System),如果我們今天只是要簡單的執行一支程式使用se.py即可,在使用Gem5時如果是在gem5.fast後加入--help可以看到gem5本身的option,例如--debug-falgs等輸出debug資訊的選項,又或者是-D可以決定輸出的資料夾位置,而在se.py後輸入--help則能查詢se.py所提供的選項,包含cpu-type,cache-type,分支預測器的種類等。

並且Gem5有一個與他配套的,叫做Konata的分析工具,可以視覺化處理器內流水線的流動,只要在執行的時候輸入--debug-flags=O3PipeView,O3CPUAll,之後就輸出資料夾內所產生的log檔餵給Konata就可以看到每個管線在不同時間點的狀態,非常適合用來檢視自己的效能瓶頸落在哪裡。

Konata的示意圖


碎碎念: 介紹過仿真器,行為模擬器與時序模擬器了,接下來就是要來構思我們自己的模擬器啦~


上一篇
Day 5 QEMU-功能強大且快速的仿真器
下一篇
Day 7 -番外篇 : 評價模擬器的六大指標
系列文
從零開始的RISC-V ISA Simulator (Another Little RISC-V ISA Simulator)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言